#pragma once

#include <map>
#include <vector>
#include "HashedString.h"
#include "Image.h"

struct Texture
{
	typedef std::vector<Texture> Vector_t;
	typedef std::map<HashedString, Texture> Map_t;
	typedef std::pair<HashedString, Texture> Pair_t;

	Texture(Pointer<Image>& image) : m_image(image)
	{
		m_wrapS = 0x2901;
		m_wrapT = 0x2901;
		m_minFilter = 0x2702;
		m_magFilter = 0x2600;
		m_envMode = 0x2101;
		memset(m_sourcesRGB, 0, sizeof(m_sourcesRGB));
		memset(m_operandsRGB, 0, sizeof(m_operandsRGB));
		memset(m_sourcesAlpha, 0, sizeof(m_sourcesAlpha));
		memset(m_operandsAlpha, 0, sizeof(m_operandsAlpha));
	};
	Pointer<Image> m_image;
	int m_minFilter;
	int m_magFilter;
	int m_wrapS;
	int m_wrapT;
	int m_envMode;
	int m_combineRGB;
	int m_sourcesRGB[2];
	int m_operandsRGB[2];
	int m_combineAlpha;
	int m_sourcesAlpha[2];
	int m_operandsAlpha[2];
	unsigned int m_textureID;
};